package com.itheima.health.util;

import com.itheima.health.entity.ValidateCode;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * @author ：李帅
 * @date ：Created in 2022年06月07日
 * @description ：
 * @version: 1.0
 */
@Slf4j
@Component
public class Code2RedisUtils {
    /**
     * 新增redis
     * @return
     */
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 新增验证码
     * @param validateCode
     * @return
     */
    public String addRedis(ValidateCode validateCode){
        //获取type+手机号
        String phoneKey = validateCode.getType() + validateCode.getTelephone();
        String phone = validateCode.getTelephone()+"";
        //生成验证码
        if(StringUtils.isNotEmpty(phone)){//手机号不为空
            //生成随机的四位验证码
            Integer code = ValidateCodeUtils.generateValidateCode(4);
            log.info("**********验证码是:"+code);
            //把生成的验证码存到redis中
            //存到redis 键：type+手机号   值：验证码
            redisTemplate.opsForValue().set(phoneKey,code,2, TimeUnit.MINUTES);
            return code+"";

        }
        return null;
    }

    /**查询验证码
     *
     */
    public String findRedis(ValidateCode validateCode){
        //获取键
        String phoneKey = validateCode.getType() + validateCode.getTelephone();
        //判断redis里有没有验证码
        String code = redisTemplate.opsForValue().get(phoneKey)+"";
        if (code==null){
            return null;
        }
        return code;
    }

    /**
     * 删除验证码
     */
    public String deleteRedis(ValidateCode validateCode){
        //获取键
        String phoneKey = validateCode.getType() + validateCode.getTelephone();
        //删除redis
        redisTemplate.delete(phoneKey);
        return "删除验证码成功";
    }
}
